//
//  JWKHomeTableViewController.swift
//  Weibo
//
//  Created by 姜维克 on 16/5/19.
//  Copyright © 2016年 姜维克. All rights reserved.
//

import UIKit
import SVProgressHUD

class JWKHomeTableViewController: JWKBaseTableViewController {
    
    //设置cell的标识id
    private let statusCellID = "statusCellID"
    
    //设置上拉加载更多的小菊花属性
    private var addMoreIndicatorView:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
    
    //设置下拉刷新自定义控件属性
   private let refreshView = JWKRefreshControl()
    
    //懒加载模型数组--里面的对象都是状态模型类型
    lazy var statusesArray : [JWKStatusViewModel] = [JWKStatusViewModel]()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //login是父类继承过来的属性
        if !login {
          //没有登录
            visitorView.setupUI("关注一些人,回到这里看看有什么内容", imageName: "visitordiscover_feed_image_smallicon", isHome: true)
            return
        }
        
        

        setupRightItem()
        
        //准备设置tableView基本属性
        setupTableView()
        //加载网络数据
        loadData()
    }
    
    func setupRightItem(){
    
        //创建并添加一个导航条右侧的item--模型 
        //用一个自定义的按钮来做customView
        
        let rightItem = UIBarButtonItem.init(imageName: "navigationbar_pop", title: nil, target: self, action: #selector(JWKHomeTableViewController.push))
       
        navigationItem.rightBarButtonItem = rightItem

    }
    
    @objc private func push(){
        //创建一个控制器跳转
        let vc = JWKDetailViewController()
        vc.view.backgroundColor = UIColor.whiteColor()
        
        vc.hidesBottomBarWhenPushed = true
        self.navigationController?.pushViewController(vc, animated: true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    //设置tableView基本属性
    private func setupTableView(){
        //注册cell
        tableView.registerClass(JWKStatusTableViewCell.self, forCellReuseIdentifier: statusCellID)
        
        //默认行高
        tableView.rowHeight = UITableViewAutomaticDimension
        //        tableView.rowHeight = 500
        tableView.estimatedRowHeight = 300
        
        //把刷新控件放到tableView的最上面
        tableView.addSubview(refreshView)
        
        refreshView.addTarget(self, action: #selector(loadData), forControlEvents: .ValueChanged)
        
        //设置tableviewFooterView为小菊花
        tableView.tableFooterView = self.addMoreIndicatorView
        
    }
    
    
    //MARK:加载网络数据
    @objc private func loadData(){
       let isPulling = self.refreshView.indicatorView.isAnimating()
//        let isPulling = self.refreshControl?.refreshing ?? false
        
        JWKStatusListViewModel.sharedStatusListViewModel.loadStatusesData(isPulling) { (isSuccess) in
        
//            停止转动底部的加载更多小菊花控件
            self.addMoreIndicatorView.stopAnimating()
            
            if !isSuccess{
                //失败
                SVProgressHUD.showErrorWithStatus(networkErrorMessage)
                return
            }
            
            if JWKStatusListViewModel.sharedStatusListViewModel.statuses.count <= 0 {
//                print("没有数据")
                SVProgressHUD.showErrorWithStatus("没有数据")
                return
            }
            
            //成功
//
            
            self.statusesArray = JWKStatusListViewModel.sharedStatusListViewModel.statuses
            self.tableView.reloadData()
        }
  
        }
    
    }
    
extension JWKHomeTableViewController{


    // MARK: - Table view data source

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return statusesArray.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        //MARK:-如果到了最后一个cell,并且这个时候加载更多小菊花没有转动,那么需要下拉加载更多数据
        if indexPath.row == statusesArray.count - 1 && !self.addMoreIndicatorView.isAnimating(){
            //让底部的小菊花转动
            self.addMoreIndicatorView.startAnimating()
            //并且加载数据
            loadData()
            
        }
        
        guard let cell = tableView.dequeueReusableCellWithIdentifier(statusCellID, forIndexPath: indexPath) as? JWKStatusTableViewCell else{
            return UITableViewCell()
        }
        cell.statusViewModel = statusesArray[indexPath.row]
        return cell
    }


}
